home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / os2 / adaptor.zip / ADAPT.ZIP / adaptor / examples / laplace / automat.f next >
Text File  |  1993-03-23  |  941b  |  40 lines

  1.       PROGRAM LAPLACE
  2.       INTEGER MAXX, MAXY
  3.       PRINT *,'MAXX = (z.B. 64) '
  4.       READ *,MAXX
  5.       PRINT *,'MAXY = (z.B. 64) '
  6.       READ *,MAXY
  7.       CALL RELAX (MAXX,MAXY)
  8.       STOP
  9.       END
  10.  
  11.       SUBROUTINE RELAX (MAXX,MAXY)
  12.       INTEGER MAXX, MAXY
  13.       REAL F(MAXX,MAXY), DF(MAXX,MAXY), HF(MAXX,MAXY)
  14.       LOGICAL CMASK(MAXX,MAXY)
  15.       REAL FMAX
  16.       INTEGER ITER
  17. C
  18.       CMASK = .FALSE.
  19.       CMASK (2:MAXX-1,2:MAXY-1) = .TRUE.
  20.       F = 2.
  21.       F(:,MAXY) = 1.
  22.       WHERE (CMASK) F = 0.
  23.       ITER = 0
  24.       FMAX = 1
  25.       DF = 0.0
  26.       DO WHILE (FMAX > 0.001)
  27.          ITER = ITER + 1
  28.          HF = 0.25 * (CSHIFT(F,1,1) + CSHIFT(F,1,-1)
  29.      $              + CSHIFT(F,2,1) + CSHIFT(F,2,-1)) - F
  30.          WHERE (CMASK)
  31.             DF = HF
  32.             F = F + DF
  33.          ENDWHERE 
  34.          DF = ABS(DF)
  35.          FMAX = MAXVAL (DF)
  36.          PRINT *,'Iteration ',ITER,'  Max = ',FMAX
  37.       END DO
  38.       END SUBROUTINE
  39.  
  40.